# sqlalchemy模块
# SQLAlchemy 是 Python 中一个通过 ORM 操作数据库的框架。提供高效和高性能的数据库访问，实现了完整的企业级持久模型。
# 组成部分：
# 　　-- engine，框架的引擎
# 　　-- connection pooling 数据库连接池
# 　　-- Dialect 选择链接数据库的DB-API种类（实际选择哪个模块链接数据库）
# 　　-- Schema/Types 架构和类型
# 　　-- SQL Expression Language SQL表达式语言
from sqlalchemy import create_engine
# 连接数据库：
# dialect+driver://username:password@host:port/database
# dialect：数据库，如：sqlite、mysql、oracle等
# driver：数据库驱动，用于连接数据库
# username：用户名
# password：密码
# host：IP地址
# port：端口
# database：数据库

# create_engine 建立连接引擎
conn = create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/test?charset=utf8mb4",
                     max_overflow=0,   # 超过连接池大小外最多创建的连接数
                     pool_size=5,      # 连接池大小
                     pool_timeout=30,  # 连接池中没有线程最多等待时间，否则报错
                     pool_recycle=-1,  # 多久之后对连接池中的连接进行回收（重置）-1不回收
                     echo=True         # echo 标志是设置SQLAlchemy日志记录的快捷方式。 启用它后，我们将看到所有生成的SQL。
                     )


def test():
    ret = conn.connect()  # 连接数据库
    result = ret.execute('select 1') #执行原生SQL
    print(result)
    print(result.fetchone())
    ret.close()


if __name__ == '__main__':
    test()
